package com.song.springcloud.service;

import com.song.springcloud.pojo.User;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

import java.util.List;

// 服务降级： 实现 FallbackFactory 后备工厂，当8001提供方服务停了后，会调用这里的降级方法；方法里面也可以切换访问8002
@Component
public class UserClientServiceFallbackFactory implements FallbackFactory<UserClientService> {

    // 降级方法
    @Override
    public UserClientService create(Throwable throwable) {
        return new UserClientService(){
            @Override
            public User queryById(Long id) {
                return new User()
                        .setUserId(id)
                        .setUserName("id=>"+id+"没有对应的信息，客户端提供了降级的信息，这个服务现在已经被关闭")
                        .setDbSource("没有数据~");

                // 其他降级处理
                // 尝试调用8001服务，成功直接返回
                // 调用8001服务失败，切换调用8002服务
            }

            @Override
            public List<User> queryAll() {
                return null;
            }

            @Override
            public Boolean addUser(User user) {
                return null;
            }
        };
    }
}
